home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 132_01 / run6809.a69 < prev    next >
Text File  |  1985-08-19  |  4KB  |  220 lines

  1.     #ASM
  2. ; +
  3. ;    Runtime package for the small c compiler.
  4. ;    See Dr. Dobb's Journal #48 (Sept.,1980) for
  5. ;    original 8080 version and comments.
  6. ;    Register conventions:
  7. ;        Primary register    D
  8. ;        Secondary register    X
  9. ;        Primary byte reg.    B
  10. ;    Since X is not a full function arithmetic register,
  11. ;    it will usually be pushed onto the hardware (S) stack
  12. ;    and operations will index it off the stack pointer.
  13. ;    Working storage is also allocated on the stack.
  14. ;-
  15. ccgchar:
  16.     FCB    01FH,01    ; TFR D,X
  17.     FCB    0E6H,084H    ; LD B  ,X
  18. ccsxt:
  19.     FCB    01DH    ;SEX
  20.     rts
  21. ccgint:
  22.     FCB    01FH,01    ; TFR D,X
  23.     FCB    0ECH,084H    ; LDD 0,X
  24.     rts
  25. ccpchar:
  26.     FCB    0E7H,084H ;STB ,X
  27.     rts
  28. ccpint:
  29.     FCB    0EDH,084H ;STD ,X
  30.     rts
  31. ccor:
  32.     FCB    034H,010H    ; PSHS  X
  33.     FCB    0AAH,0E0H    ; ORA    ,S+
  34.     FCB    0EAH,0E0H    ; ORB    ,S+
  35.     rts
  36. ccxor:
  37.     FCB    034H,010H    ; PSHS    x
  38.     FCB    0A8H,0E0H    ; EORA    ,S+
  39.     FCB    0E8H,0E0H    ; EORB    ,S+
  40.     rts
  41. ccand:
  42.     FCB    034H,010H    ;PSHS X
  43.     FCB    0A4H,0E0H    ;ANDA ,s+
  44.     FCB    0E4H,0E0H    ;ANDB    ,S+
  45.     rts
  46. cccmp:
  47.     FCB    034H,006H    ;PSHS D
  48.     FCB    01EH,01        ;EXG D,X
  49.     FCB    08EH,0,1    ;LDX #1
  50.     FCB    0A3H,0E1H    ;SUBD ,S++
  51.     FCB    01EH,01        ;EXG D,X  move 1 into D w/o affecting flags
  52.     bmi    ccmp1
  53.     FCB    01CH,0FEH    ;ANDCC FE    clear the carry bit
  54.     rts
  55. ccmp1:
  56.     FCB    01AH,01        ;ORCC 01    set the carry bit
  57.     rts
  58. cceq:
  59.     bsr    cccmp
  60.     beq    exit
  61.     decb
  62. exit:    rts
  63. ccne:
  64.     bsr    cccmp
  65.     bne    exit
  66.     decb
  67.     rts
  68. ccgt:
  69.     FCB    01EH,01        ; EXG D,X
  70.     bsr    cccmp
  71.     bcs    exit
  72.     decb
  73.     rts
  74. ccle:
  75.     bsr    cccmp
  76.     beq    exit
  77.     bcs    exit
  78.     decb
  79.     rts
  80. ccge:
  81.     bsr    cccmp
  82.     bcc    exit
  83.     decb
  84.     rts
  85. cclt:
  86.     bsr    cccmp
  87.     bcs    exit
  88.     decb
  89.     rts
  90. ccuge:
  91.     bsr    ccucmp
  92.     bcc    exit
  93.     decb
  94.     rts
  95. ccult:
  96.     bsr    ccucmp
  97.     bcs    exit
  98.     decb
  99.     rts
  100. ccugt:
  101.     FCB    01EH,01    ;EXG D,X
  102.     bsr    ccucmp
  103.     bcs    exit
  104.     decb
  105.     rts
  106. ccule:
  107.     bsr    ccucmp
  108.     beq    exit
  109.     bcs    exit
  110.     decb
  111.     rts
  112. ccucmp:
  113.     FCB    034H,06    ;PSHS D
  114.     FCB    01EH,01    ;EXG D,X
  115.     FCB    08EH,01    ;LDX #1
  116.     FCB    010H,0A3H,0E1H    ;CMPD    0,S++
  117.     rts
  118. ccasr:
  119.     FCB    01EH,01    ;EXG D,X
  120. lccasr:    
  121.     asra
  122.     rorb
  123.     FCB    030H,01FH    ;LEAX    -1,X
  124.     bne    lccasr
  125.     rts
  126. ccasl:
  127.     FCB    01EH,01        ;EXG D,X
  128. lccasl:
  129.     aslb
  130.     rola
  131.     FCB    030H,01FH    ;LEAX    -1,x
  132.     bne    lccasl
  133.     rts
  134. ccsub:
  135.     FCB    034H,06        ;PSHS    D
  136.     FCB    01eH,01        ;EXG    D,X
  137.     FCB    0A3H,0E1H    ;SUBD    ,S++
  138.     rts
  139. cccom:
  140.     coma
  141.     comb
  142.     rts
  143. ccneg:
  144.     coma
  145.     comb
  146.     FCB    0C3H,00,01    ;ADDD    #1
  147.     rts
  148. ccmult:
  149.     FCB    034H,016H    ;PSHS    X,D
  150.     clra
  151.     clrb
  152. ccmul1:
  153.     FCB    064H,0e4H    ;LSR 0,s  test for multiply
  154.     FCB    066H,061H    ;ROR    1,S
  155.     bcc    ccmul2
  156.     FCB    0E3H,062H    ;ADDD    2,S
  157. ccmul2:
  158.     FCB    06dH,061H    ; TST  1,s  test for any more mults
  159.     bne    ccmul3
  160.     FCB    06DH,0E4H    ;TST    ,S
  161.     bne    ccmul3
  162.     FCB    032H,064H    ;LEAS    4,s
  163.     rts
  164. ccmul3:
  165.     FCB    068H,063H    ; LSL  3,s  move up the multiplicand
  166.     FCB    069H,062H    ;ROL    2,S
  167.     bne    ccmul1
  168.     FCB    06DH,063H    ;TST    3,S
  169.     bne    ccmul1
  170.     FCB    032H,064H    ;LEAS    4,S
  171.     rts
  172. ccdiv:
  173.     FCB    034H,016H    ;PSHS    X,D
  174.     FCB    0A8H,062H    ;EORA    2,S
  175.     FCB    034H,006H    ;PSHS    D
  176.     clra
  177.     clrb
  178.     FCB    034H,006H    ;PSHS    D
  179.     FCB    06DH,064H    ;TST    4,S
  180.     bpl    ccdiv0
  181.     FCB    0A3H,064H    ;SUBD    4.S
  182.     FCB    0EDH,064H    ;STD    4,s
  183. ccdiv0:
  184.     FCB    06DH,066H    ;TST    6,S
  185.     bpl    ccdiv4
  186.     clra
  187.     clrb
  188.     FCB    0A3H,066H    ;SUBD    6,S
  189.     FCB    0EDH,066H    ;STD    6,s
  190. ccdiv4:
  191.     FCB    0CCH,0,010H    ;LDD    #16
  192.     FCB    034H,006H    ;PSHS    D
  193. ccdiv1:
  194.     FCB    068H,069H    ;ASL    9,S
  195.     FCB    069H,068H    ;ROL    8,S
  196.     FCB    069H,063H    ;ROL    3,S
  197.     FCB    069H,062H    ;ROL    2,S
  198.     bne    ccdiv2
  199.     FCB    0ECH,062H    ;LDD    2,S
  200.     FCB    010H,0A3H,066H    ;CMPD    6,S
  201.     bmi    ccdiv2
  202.     FCB    06CH,069H    ;INC    9,S
  203.     FCB    0ECH,062H    ;LDD    2,S
  204.     FCB    0A3H,066H    ;SUBD    6,S
  205.     FCB    0EDH,066H    ;STD    6,S
  206. ccdiv2:
  207.     FCB    06AH,061H    ;DEC    1,S
  208.     bne    ccdiv1
  209. ccdiv3:
  210.     FCB    06DH,064H    ;TST    4,S
  211.     bpl    ccdivx
  212.     clra
  213.     clrb
  214.     FCB    0A3H,062H    ;SUBD    2,S
  215.     FCB    032H,06AH    ;LEAS    A,S
  216. ccdivx:
  217.     rts
  218.     #ENDASM
  219. "√8├#>═{#!]═-#>*?5═#>
  220. *K5═#╔:▒8O>*▓8═#:9■╩≥"9═æ!₧*≥3⌠3═"├ß!σ┼⌡═#±═{#┴ß├T#>╣╨>?╣╚:9╣╚y29┼>